<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
    Author : Alvin Andhika
*/
include 'page/abstractPage.php';

//1. Nama kelas samakan dengan nama file - WAJIB extend AbstractPage
class ServerInformasiRuangan extends AbstractPage {

    private $action=''; //keterangan aksi dari button submit submit (isi sendiri dengan string)
    private $message='';//keterangan pesan berhasil atau sukses
    private $page='';
    private $dataRuangan = array();
    private $informasiRuangan = array();
    private $isRoomAvailable = "Not Available";
    
    public function ServerInformasiRuangan()
    {
        parent::__construct();
        $this->load->model('Kegiatan');
        $this->load->model('KegiatanNonRutin');
        $this->load->model('Ruangan');

        //membuat template tabel
        $tmpl = array (
            'table_open'          => '<table border="1" cellpadding="4" cellspacing="0" class="table1">',

            'heading_row_start'   => '<tr>',
            'heading_row_end'     => '</tr>',
            'heading_cell_start'  => '<th>',
            'heading_cell_end'    => '</th>',

            'row_start'           => '<tr>',
            'row_end'             => '</tr>',
            'cell_start'          => '<td>',
            'cell_end'            => '</td>',

            'row_alt_start'       => '<tr>',
            'row_alt_end'         => '</tr>',
            'cell_alt_start'      => '<td>',
            'cell_alt_end'        => '</td>',

            'table_close'         => '</table>'
        );

        $this->table->set_template($tmpl);        
    }

    public function cekInput($tanggalMulai,$tanggalSelesai,$jamMulai,$jamSelesai){
        $errorTanggal = FALSE;
        $errorJam = FALSE;

        $this->message = '';

        if(preg_match("/\d{2}-\d{2}-\d{4}/", $tanggalMulai) && preg_match("/\d{2}-\d{2}-\d{4}/", $tanggalSelesai)){
            $arrayTanggalMulai = explode("-", $tanggalMulai);
            $arrayTanggalSelesai = explode("-", $tanggalSelesai);

            if($arrayTanggalSelesai[2] < $arrayTanggalMulai[2]){
                $errorTanggal = TRUE;
                $this->message = $this->message . "Masukan Tanggal tidak valid\n";
            }
            else if($arrayTanggalSelesai[2] == $arrayTanggalMulai[2]){
                if($arrayTanggalSelesai[1] < $arrayTanggalMulai[1]){
                    $errorTanggal = TRUE;
                    $this->message = $this->message . "Masukan Tanggal tidak valid\n";
                }
                else if($arrayTanggalSelesai[1] == $arrayTanggalMulai[1]){
                    if($arrayTanggalSelesai[0] < $arrayTanggalMulai[0]){
                        $errorTanggal = TRUE;
                        $this->message = $this->message . "Masukan Tanggal tidak valid\n";
                    }
                    else if($arrayTanggalSelesai[0] == $arrayTanggalMulai[0]){
                        $errorTanggal = FALSE;
                    }
                    else {
                        $errorTanggal = FALSE;
                    }
                }
                else {
                    $errorTanggal = FALSE;
                }
            }
            else {
                $errorTanggal = FALSE;
            }
        }
        else {
            $errorTanggal = TRUE;
            $this->message = $this->message . "Format Tanggal tidak valid\n";
        }

        if(preg_match("/\d{2}:\d{2}/", $jamMulai) && preg_match("/\d{2}:\d{2}/", $jamSelesai)){
            $arrayJamMulai = explode(":", $jamMulai);
            $arrayJamSelesai = explode(":", $jamSelesai);

            if($arrayJamSelesai[0] < $arrayJamMulai[0]){
                $errorJam = TRUE;
                $this->message = $this->message . "Masukan Jam tidak valid\n";
            }
            else if($arrayJamSelesai[0] == $arrayJamMulai[0]){
                if($arrayJamSelesai[1] < $arrayJamMulai[1]){
                    $errorJam = TRUE;
                    $this->message = $this->message . "Masukan Jam tidak valid\n";
                }
                else if($arrayJamSelesai[1] == $arrayJamMulai[1]){
                    $errorJam = TRUE;
                    $this->message = $this->message . "Masukan Jam tidak valid\n";
                }
                else {
                    $errorJam = FALSE;
                }
            }
            else {
                $errorJam = FALSE;
            }
        }
        else {
            $errorJam = TRUE;
            $this->message = $this->message . "Format Jam tidak valid\n";
        }

        if($errorTanggal || $errorJam){
            return FALSE;
        }
        else {
            return TRUE;
        }
    }

    public function cekStatusRuangan()
    {
        if($this->cekInput($_POST['tanggalMulai'], $_POST['tanggalSelesai'], $_POST['jamMulai'],$_POST['jamSelesai'])) {
            $this->action='cekStatus';
            $this->page="status";

            $this->load->model('Kegiatan','kegiatan');
            $this->load->model('KegiatanNonRutin','kegiatannonrutin');
            $this->load->model('Ruangan','ruangan');

            $arrayTanggalMulai = explode("-", $_POST['tanggalMulai']);
            $arrayTanggalSelesai = explode("-", $_POST['tanggalSelesai']);

            $tanggalMulai = $arrayTanggalMulai[2] . "-" . $arrayTanggalMulai[1] . "-" . $arrayTanggalMulai[0];
            $tanggalSelesai = $arrayTanggalSelesai[2] . "-" . $arrayTanggalSelesai[1] . "-" . $arrayTanggalSelesai[0];

            $hasilRutin=$this->kegiatan->getRoomStatus($_POST['kodeRuangan'],$_POST['hari'],$tanggalMulai,$tanggalSelesai,$_POST['jamMulai'],$_POST['jamSelesai']);

            $tanggalJamMulai = $arrayTanggalMulai[2] . "-" . $arrayTanggalMulai[1] . "-" . $arrayTanggalMulai[0] . " " . $_POST['jamMulai'] . ":00";
            $tanggalJamSelesai = $arrayTanggalSelesai[2] . "-" . $arrayTanggalSelesai[1] . "-" . $arrayTanggalSelesai[0] . " " . $_POST['jamSelesai'] . ":00";

            //$hasilNonRutin=$this->kegiatannonrutin->getRoomStatus($_POST['kodeRuangan'],$tanggalJamMulai,$tanggalJamSelesai);

            $count = 0;
            foreach ($hasilRutin as $row)
            {
                $count = $count + 1;
            }

            /*
            foreach ($hasilNonRutin as $row)
            {
                $count = $count + 1;
            }
            */
            
            if($count == 0){
                $this->isRoomAvailable = "Available";
            }
            else {
                $this->isRoomAvailable = "Not Available";
            }

            $row = $this->ruangan->getRuangan($_POST['kodeRuangan']);
            array_push($this->informasiRuangan, $row->roomID);
            array_push($this->informasiRuangan, $row->roomName);
            array_push($this->informasiRuangan, $row->description);
            array_push($this->informasiRuangan, $row->pjRuangan);
            array_push($this->informasiRuangan, $row->parentRoom);
        }
        else {
            $this->action='';
            $this->page="form";

            $hasil=$this->Ruangan->getAllRuangan();

            foreach ($hasil as $row)
            {
                array_push($this->dataRuangan, $row->roomID);
            }
        }
        
        $this->index();
    }

    public function daftarRuangan()
    {
        $this->action='';
        $this->page="form";
        $this->message='';
        
        $hasil=$this->Ruangan->getAllRuangan();

        foreach ($hasil as $row)
        {            
            array_push($this->dataRuangan, $row->roomID);
        }

        $this->index();
    }

    function _buildContent()
    {
        if ($this->action=='')
        {
            $data = array (
                'dataRuangan' => $this->dataRuangan,
                'page' => $this->page,
                'message' => $this->message
            );
            $this->load->view('InformasiRuangan/MelihatInformasiRuangan',$data);
        }
        else if ($this->action=="cekStatus")
        {

            $data = array (
                'informasiRuangan' => $this->informasiRuangan,
                'ketersediaanRuangan' => $this->isRoomAvailable,
                'page' => $this->page,
                'message' => $this->message
            );
            $this->load->view('InformasiRuangan/MelihatInformasiRuangan',$data);
        }
    }
}

